#ifndef __SHARED_PTR_HPP__
#define __SHARED_PTR_HPP__


#if defined(LINKED_SHARED_PTR)

#include "detail/linked_ptr.h"
#define SharedPtr LinkedPtr

#elif defined (USE_ACE_SHARED_PTR)
#include "ace/Synch.h"
#include "ace/Refcounted_Auto_Ptr.h"
namespace vpm 
{
	namespace utils
	{
		template <class X>
		class SharedPtr:public ACE_Refcounted_Auto_Ptr<X,ACE_Thread_Mutex>
		{
		public:
			SharedPtr(X *p = 0):
			  ACE_Refcounted_Auto_Ptr<X,ACE_Thread_Mutex>(p)
			  {
			  }

			  SharedPtr(const SharedPtr<X>& r):
			  ACE_Refcounted_Auto_Ptr<X,ACE_Thread_Mutex>(r)
			  {
			  }

			  virtual ~SharedPtr(void)
			  {
			  }
		};
	}
}
#else
#include <boost/shared_ptr.hpp>
#define SharedPtr boost::shared_ptr
#endif 

#endif 

